public class Leilao implements ILeilao {

	String descricao;
	private double valor;
	IUsuario vendedor;

	public Leilao() {
	}

	public Leilao(String descricao, double valor, IUsuario vendedor) {
		this.descricao = descricao;

		if (valor < 0)
			System.out.println("Valor invalido!!!");
		else
			this.valor = valor;

		this.vendedor = vendedor;
	}

	public double getValorAtual() {
		return this.valor;
	}

	public void setValorAtual(double valor) {

		this.valor = valor;
	}

	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public void lance(double valor, IUsuario usuario) throws Exception {

		if (valor > 0) {
			this.valor += valor;
			System.out.println("O lance atual eh de: R$" + this.valor
					+ " feito por " + usuario.getEmail());
		} else {
			throw new Exception(
					"\n---> Valor invalido!!! Por favor forneca um lance maior que o atual! <---\n");
		}

	}

	public boolean finalizaLeilao(IUsuario usuario) {
		System.out.println("\nO " + this.descricao
				+ " foi finalizado com lance final de R$" + this.valor
				+ "\nVencedor: " + usuario.getEmail());

		if (usuario.getConta().getSaldo() >= this.valor) {
			usuario.getConta().debitar(this.valor);

			IEnvioEmail envioEmail = new EnvioEmail();
			envioEmail.enviar(usuario.getEmail());

			return true;
		} else
			return false;

		/*
		 * IEnvioEmail envioEmail = new EnvioEmail();
		 * 
		 * envioEmail.enviar(usuario.getEmail());
		 * 
		 * 
		 * 
		 * return true;
		 */
	}

	public IUsuario getVendedor() {
		return this.vendedor;
	}

	public double getVersion() {

		return 1.8;
	}
}
